#!/bin/bash

# 算命网站 EC2 部署脚本
# 使用方法: ./deploy-ec2.sh

set -e  # 遇到错误立即退出

echo "🚀 开始部署算命网站到 EC2..."

# 配置变量（请根据实际情况修改）
EC2_IP="your-ec2-ip"           # 替换为你的 EC2 IP
KEY_FILE="your-key.pem"        # 替换为你的密钥文件
EC2_USER="ec2-user"            # Amazon Linux 默认用户
PROJECT_NAME="fortune-telling-website"

# 检查必要文件
if [ ! -f "$KEY_FILE" ]; then
    echo "❌ 错误: 找不到密钥文件 $KEY_FILE"
    echo "请确保密钥文件存在并设置正确的路径"
    exit 1
fi

# 设置密钥权限
chmod 400 "$KEY_FILE"

echo "📦 准备部署文件..."

# 创建临时部署目录
TEMP_DIR=$(mktemp -d)
cp -r frontend backend package.json "$TEMP_DIR/"

# 创建部署压缩包
cd "$TEMP_DIR"
tar -czf "../${PROJECT_NAME}.tar.gz" .
cd - > /dev/null

echo "🔗 连接到 EC2 实例..."

# 上传文件到 EC2
scp -i "$KEY_FILE" "${TEMP_DIR}/../${PROJECT_NAME}.tar.gz" "${EC2_USER}@${EC2_IP}:~/"

echo "⚙️  在 EC2 上安装和配置..."

# 在 EC2 上执行部署命令
ssh -i "$KEY_FILE" "${EC2_USER}@${EC2_IP}" << 'EOF'
    # 更新系统
    sudo yum update -y
    
    # 安装 Node.js 16
    curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
    sudo yum install -y nodejs
    
    # 停止旧的应用（如果存在）
    if [ -f app.pid ]; then
        kill $(cat app.pid) 2>/dev/null || true
        rm -f app.pid
    fi
    
    # 清理旧文件
    rm -rf fortune-telling-website
    
    # 创建项目目录
    mkdir -p fortune-telling-website
    cd fortune-telling-website
    
    # 解压项目文件
    tar -xzf "../fortune-telling-website.tar.gz"
    
    # 安装依赖
    npm install --production
    
    # 启动应用
    export NODE_ENV=production
    export PORT=3000
    nohup npm start > app.log 2>&1 &
    echo $! > app.pid
    
    echo "✅ 应用已启动，PID: $(cat app.pid)"
    echo "📝 日志文件: ~/fortune-telling-website/app.log"
    
    # 等待应用启动
    sleep 3
    
    # 检查应用状态
    if ps -p $(cat app.pid) > /dev/null; then
        echo "🎉 部署成功！应用正在运行"
        echo "🌐 访问地址: http://$(curl -s http://169.254.169.254/latest/meta-data/public-ipv4):3000"
    else
        echo "❌ 应用启动失败，请检查日志"
        tail -10 app.log
    fi
EOF

# 清理临时文件
rm -rf "$TEMP_DIR" "${TEMP_DIR}/../${PROJECT_NAME}.tar.gz"

echo ""
echo "🎯 部署完成！"
echo "📋 后续操作："
echo "   1. 确保 EC2 安全组开放 3000 端口"
echo "   2. 访问 http://${EC2_IP}:3000 测试网站"
echo "   3. 查看日志: ssh -i ${KEY_FILE} ${EC2_USER}@${EC2_IP} 'tail -f fortune-telling-website/app.log'"
